
/**
 * 入口文件
 */
import Vue from 'vue';
import VueRouter from 'vue-router';
import Router from './router';
import RouterMap from './router-map';
import filter from './filter';
import VueResource from 'vue-resource';
import App from './App';

// import $ from '../static/js/jqmin.js';
import common from './utils/common';
import './assets/css/toast.scss';

//组件引用
import { Toast } from 'mint-ui';

// import $ from '../static/js/jqmin.js';

Vue.config.silent = true;

Vue.use(VueRouter);
Vue.use(VueResource);
Vue.http.options.emulateJSON = true;


//组件挂载到COMMON
common.Vue = Vue;
common.Toast = Toast;
common.VueRouter = VueRouter;

// 自定义过滤器
filter(Vue);

var router = new VueRouter({
//	history: true,
    hashbang: true,	
	saveScrollPosition: true
});

// var myFirstPromise = new Promise(function(resolve, reject){
//     //当异步代码执行成功时，我们才会调用resolve(...), 当异步代码失败时就会调用reject(...)
//     //在本例中，我们使用setTimeout(...)来模拟异步代码，实际编码时可能是XHR请求或是HTML5的一些API方法.
//     setTimeout(function(){
//         Vue.http.post(common.isdev()+"/user/checkLogin.htm",{'aaa':'bbb'}).then(function(){
//             console.info('hahaha');
//             resolve("成功!"); //代码正常执行！
//         });
        
//     }, 250);

// });

// myFirstPromise.then(function(successMessage){
//     //successMessage的值是上面调用resolve(...)方法传入的值.
//     //successMessage参数不一定非要是字符串类型，这里只是举个例子
//     console.log("Yay! " + successMessage);
// });







//获取cookie
function getCookie(cookie_name){ 
    var allcookies = document.cookie;  
    var cookie_pos = allcookies.indexOf(cookie_name);  
    if (cookie_pos != -1){
        cookie_pos += cookie_name.length + 1;
        var cookie_end = allcookies.indexOf(";", cookie_pos);
        if (cookie_end == -1){    
        cookie_end = allcookies.length;
        } 
        var value = unescape(allcookies.substring(cookie_pos, cookie_end));  
    }  
    return value;  
}

//看是否登录
function getLogin(){
    if(getCookie('sc_s')||getCookie('wemall_cxid_c')!='""'){
        return true;
    }else{
        return false;

    }
}

//定渠道 看OPENTYPE_C
function getOpenType(){
    if(getCookie('wemall_opentype_c')){
        return true;
    }else{
        getIsLogin();
        
    }
}


function getIsLogin(){

    var backUrl = common.isdev()+"/user/checkLogin.htm",
        result;

    common.ajax({
        url: backUrl,
        type: "POST",
        async:false,
        dataType: "json",
        success: function (d, xml) {
             result = d.result ==1?true:false;   
        }
    });

    return result;
};


// H5&APP， 后台倒钩
function redUrl() {
    //debugger;
	//var defaultUrl = common.isdev()+"/user/checkLogin.htm";	
	var backUrl = common.isdev()+"/user/checkLogin.htm";
	
	var hrefUrl = window.location.href;
	
	if(hrefUrl.indexOf("?userInfo=") > -1){
		backUrl = backUrl + hrefUrl.substring(hrefUrl.indexOf("?userInfo="));
	}
	
	if(hrefUrl.indexOf("?carInfo=") > -1){
		backUrl = backUrl + hrefUrl.substring(hrefUrl.indexOf("?carInfo="));
	}

    console.info('hrefUrl:'+hrefUrl);
    console.info('backUrl:'+backUrl);


    var myFirstPromise = new Promise(function(resolve, reject){
        //当异步代码执行成功时，我们才会调用resolve(...), 当异步代码失败时就会调用reject(...)
        //在本例中，我们使用setTimeout(...)来模拟异步代码，实际编码时可能是XHR请求或是HTML5的一些API方法.

        Vue.http.post(backUrl,{'aaa':'bbb'}).then(function(){
            console.info('hahaha');
            resolve("成功!"); //代码正常执行！
           
        });
        


    });

    return myFirstPromise;


    // var dt = $.Deferred();
    //     $.ajax({
    //         url: backUrl,
    //         type: 'POST',
    //         async: false,
    //         success:function(){
    //             setTimeout(function(){
    //                 console.info('111111');
    //                  dt.resolve();
    //             },1000)                
    //         },error:function(){

    //             console.info('error')
    //             dt.reject();
    //         }
    //     });
   
    // return dt.promise();

}


redUrl().then(function(successMessage){
    //successMessage的值是上面调用resolve(...)方法传入的值.
    //successMessage参数不一定非要是字符串类型，这里只是举个例子
    console.log("Yay! " + successMessage);
    router.beforeEach(function (transition) {
        //debugger;
        //to 页面是否需要登录
        if(transition.to.matched[0].handler.needLogin&&!getLogin()){
            //查找历史记录
            var isType =  window.localStorage.getItem(transition.to.matched[0].handler.fullPath);
            //第一次进来直接设置记录
            if(!isType){
               window.localStorage.setItem(transition.to.matched[0].handler.fullPath,true); 
            }else{
                window.localStorage.removeItem(transition.to.matched[0].handler.fullPath);                 

                if(window.history.length>0 && common.isApp()){
                    window.history.go(-1);
                }else{
                    window.close();
                }

            }
        }
        //debugger;
        transition.next();
    });

    Router(router);

    // 开启路由
    router.start(App, '#app');
});



// $.when(redUrl()).always(function(){


//     router.beforeEach(function (transition) {
//         //debugger;
//         //to 页面是否需要登录
//         if(transition.to.matched[0].handler.needLogin&&!getLogin()){
//             //查找历史记录
//             var isType =  window.localStorage.getItem(transition.to.matched[0].handler.fullPath);
//             //第一次进来直接设置记录
//             if(!isType){
//                window.localStorage.setItem(transition.to.matched[0].handler.fullPath,true); 
//             }else{
//                 window.localStorage.removeItem(transition.to.matched[0].handler.fullPath);                 

//                 if(window.history.length>0 && common.isApp()){
//                     window.history.go(-1);
//                 }else{
//                     window.close();
//                 }

//             }
//         }
//         //debugger;
//         transition.next();
//     });

//     Router(router);

//     // 开启路由
//     router.start(App, '#app');

// });



